The database is a data storage concept evolving for decades since the 1960s to ease increasing difficulties in designing, building, and maintaining complex information systems (multi-user systems with a large amount of data). Another term directly related to databases is a database management system (DBMS), which enables the effective handling of databases. It shall nevertheless be noted that the terms database and DBMS define different entities, they may be inseparable: a database's properties may be determined by its supporting DBMS. A DBMS is presently a complex software system such as general-purpose DBMSs, like Oracle or Microsoft SQL Server.
Techniques exist for computer-implemented methods and systems for creating and managing a database. In particular there are three major DBMS approaches widely used in the industry, e.g., relational databases, object databases and graph databases.
A relational database is a collection of data items organized as a set of formally described tables from which data can be accessed easily. A relational database may be created using the relational model. The software used in a relational database is called a relational database management system (RDBMS). A relational database may be a dominant choice for many data storage applications. An RDBMS may comprise of n number tables in which, for example, each table has its own primary key. The relational database was first defined in June 1970 by Edgar Codd, of IBM's San Jose Research Laboratory.
A problem with a relational database may be the complexity that arises when the relational database is created. It is generally important that defined relationships among the tables are correct and that each set of information is linked to its pair. Although less information has to be entered in total than with other database approaches, verifying that points are set up correctly may be a time-consuming process. Furthermore, the relationships can become complicated when a relational database comprises numerous tables.
An object database (also object-oriented database management system or OODBMS) is a database management system comprising information represented in the form of objects as used in object-oriented programming. Object databases may be different from relational databases and belong together in a broader database management system.
An object database may store complex data and relationships between data directly, without mapping to relational rows and columns, which may make object databases suitable for applications in which complex data may be encountered. Objects may have a many to many relationship and are accessed by the use of pointers. Pointers may be linked to objects to establish relationships. Another benefit of an OODBMS may be that an OODBMS may be programmed with small procedural differences without affecting the entire system. This may be helpful for those organizations in which data relationships may be used that are not entirely clear or there is a need to change these relations to satisfy a new business requirement.
Disadvantages of object databases may include lower efficiency when data is simple and relationships are simple, late binding may slow access speed, data and operations being separated, low responsiveness to changes in problem space, and inadequate design for concurrent problems, for example.
Over the years there have been designed hybrid object-relational databases. For example a pre-grant publication US 2003/0208493 A1 entitled “Object Relational Database Management System” appears to disclose an object relational database management system permitting a client application to access one or more data sources. A client application may direct queries to an object server component to obtain data from the data sources. An object server component may operate with an object definition component which may fulfill the queries. An object definition component may access an object definition database to obtain and use metadata, in the form of programmatic objects, about the location and structure of the data stored in the data sources. An optional object manager component may, for example, work with the object definition component to edit and create new metadata or, via the object server component, to work with and create new instances of the data sources.
As it pertains in particular to graph databases, such databases may depart from traditional storage and definitions paradigms. Many software developers may have experience with storing data in tabular form in a relational database. Such approaches may work well for some applications, but presently may begin to show drawbacks. Relational databases, for example, may exhibit difficulties in scaling. Unfortunately, more and more of today's innovative applications may involve massive data to be processed. In some instances, such large data processing requirements may expose a need for new approaches such as Graph Databases. For example, tables, such as tables used in relational databases, may be difficult to implement in Web-based environments. Since the Web may be characterized as collection of pages that are hyperlinked, not identically-shaped rows in a gigantic table, a graph database may more closely accord with present-day Web architectures. A graph, as known from mathematics, or as informally drawn by most engineers on whiteboards, may be a much more natural representation for data that is native to the web. Given that much of the data processed by today's innovative applications may exist elsewhere, the time of stovepipe applications may past. Additionally, some applications may not own a substantial percentage of their own data, such as some social feed aggregators.
A pre-grant publication number US2012096002 entitled “SYSTEMS AND METHODS FOR GENERATING AND MANAGING A UNIVERSAL SOCIAL GRAPH DATABASE,” appears to disclose a computer-implemented method for determining connections between entities that includes receiving private information from a user, retrieving public information from publicly available sources, and matching the public information with the private information. The method also includes generating a graph database with the public and private information, determining connections among entities in the graph database, and determining strength of connectivity between entities in the graph database. The disclosure appears to provide a system that tracks public and private connections between people and provides connection and profile information as a software platform via the Internet and at least one application programming interface. The system appears to implement or generate at least one graph database. The graph database may be updated in real time. Such a system may be capable of being used on a large scale to power cloud or software as a service based application that services simultaneous users and run simultaneous algorithms.
From known databases, such as ORACLE®, there is known an ALTER command. The process of modifying database structures directly requires locking a database structure that will be modified. There is also a related LOCK command that effectuates a freeze of a database structure for the time of modification such as adding, searching for or modifying records of a given table.
In production, end-user database systems, may make use of special scripts utilizing special triggers, which execute ALTER and/or LOCK commands automatically.
In some instances, an operation of adding a column to a database may lock a table. Further, an ALTER command may close currently executing data processing tasks such as transactions. This may render processing operations executing with varying number of parameters to be ineffective and may potentially threaten integrity of data gathering. Further, if data are collected very quickly, the size of a data buffer may be insufficient.
The use of the aforementioned commands in databases that are updated very frequently may be problematic in that such approaches may require databases to stop certain services. Hence it may also be beneficial to create a database system that does not require to stop the aforementioned services when, for example, a new column is to be added to an existing table.
Drawbacks of known graph databases include, for example, increased memory requirements and difficulties in presenting information to a user in a clear way. Further drawbacks of current database systems include lack of possibility of extending database in real time and difficulties in understanding how a complex database is designed.
Taking into account the present techniques there is a need to design and implement an efficient database model that is especially adapted to large scale databases, is easily scalable and has reduced memory requirement in comparison to graph, relational or object-oriented databases.
Up to now such problems have been addressed with a use of more powerful hardware such as database servers having higher performance and more memory instead of solutions related to design of the databases.